import numpy as np
import pandas as pd
import plotly.express as px
import qplot.activate
from qplot import get_axes, set_mpl_layout, set_plotly_layout, set_pd_backend
# generate data
dates = pd.date_range('2010-01-01', '2020-01-01')
df = pd.DataFrame(np.random.randn(len(dates), 5), index=dates, columns=list('ABCDE')).cumsum()
df.head()
ax = get_axes()
df.plot(ax=ax)
set_mpl_layout(ax, title='Time series', xlabel='dates', ylabel='values')
fig, (ax1, ax2) = get_axes(height=6, ncols=2, wratios=[3, 2], return_fig=True)
df['A'].plot(ax=ax1)
df['B'].plot(ax=ax2)
set_mpl_layout(ax1, legend_outside=False, ylabel='values')
set_mpl_layout(ax2)
fig.autofmt_xdate() # to avoid xticklabels overlap
fig = px.line(df, x=df.index, y='A')
set_plotly_layout(fig, title='A plot', xlabel='dates', ylabel='values', small=True)
fig.show()
# create long df (unstack columns)
df.index.name = 'date'
df.columns.name = 'column'
df_long = df.unstack().to_frame(name='value').reset_index()
df_long
fig = px.line(df_long, x='date', y='value', color='column')
set_plotly_layout(fig, title='scatter plot', height=10)
fig.show()
df.loc[:, 'S'] = df['C'].abs()
df.loc[:, 'WD'] = list(df.index.weekday)
fig = px.scatter(df.iloc[:50], x='A', y='B', size='S', animation_frame='WD', category_orders={'WD': range(7)})
set_plotly_layout(fig, xlabel='A values', ylabel='B values', height=10)
fig.show(rederer='notebook')